package test.bean;
//package com.test.bean;
//
//import java.sql.Connection;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.util.List;
//import java.util.Map;
//
//import javax.sql.DataSource;
//
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import com.smb.framework.orm.JDBCUtils;
//import com.smb.framework.orm.common.ORMappingTools;
//import com.smb.framework.orm.exception.ObjectSQLException;
//
//public class JDBCTemplateUtils_bak  implements JDBCUtils {
//	
//		private DataSource dataSource;
//		private Connection connection;
//		
//		private static Log logger = LogFactory.getLog(JDBCTemplateUtils_bak.class);
//		private static ORMappingTools   MappingTools= new ORMappingTools();
//		
//		public void setDataSource(DataSource dataSource){
//			this.dataSource=dataSource;
//		}
//		 
//		public void setConnection(Connection connection){
//			this.connection=connection;
//		}
//		
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ��������� 
//		 *  <p>
//		 * @param Object [ ]    ��������Ķ�������
//		 *  <p>
//		 */
////		public  void  addBatchObjects (Connection connection,   Object []  objTables ) throws  Exception {
//		public  void  addBatchObjects (   Object []  objTables ) throws  Exception {
//			
//			logger.info( "addBatchObjects ......................." );
//			 
//			PreparedStatement pstmt=null;
//			try{
//				for (int i=0;i<objTables.length ;i++){
//
//					String table=MappingTools.getTableName(objTables[i]  );
//					
//					List<String> column=MappingTools.getObjectColumnName(objTables[i]);
//				 
//					Map<?, ?> map =  MappingTools.copyABeanToMap(objTables[i] ) ;	 
//					
//					StringBuffer sBuffer = new StringBuffer();
//					sBuffer.append( "insert into ").append(table).append(" (");
//					for (int k=0;k<column.size();k++){
//						sBuffer.append(  column.get(k)   ).append(",");
//					}
//					sBuffer.append(") values ("  );
//					
//					for (int h=0;h<column.size();h++){
//						sBuffer.append("?,");
//					}
//					sBuffer.append(")");
//					
//	 				String SQL= sBuffer.toString().replaceAll("\\,\\)", " )")  ;
//					logger.info( "SQL  ["+SQL+"]" );
//					
//	 	  			pstmt=connection.prepareStatement(SQL);
//	 	  			
//	 	  			for (int j=0;j<column.size();j++){
//	 	  				System.out.println (j+1+"," +map.get( column.get(j) ) );
//	 	  				pstmt.setObject(j+1, map.get( column.get(j) ));
//	 	  			}
//	 	  				pstmt.addBatch();
//	 	  				pstmt.executeBatch() ;
//				}
//			}
//				catch (Exception e){
//					connection.rollback();
//					throw new ObjectSQLException(e);
//				}
//				
//				finally {
//					if (connection.getAutoCommit()==true){
//						logger.info("is closed !");
//						connection.close();
//					}
//					}
//				 
//			}
//					
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ��������� 
//		 *  <p>
//		 * @param String  ִ�е�SQL���
//		 *  <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 */
////		public Map<?, ?>  queryMap (Connection conn,  String SQL ) throws  Exception {
//		public Map<?, ?>  queryMap (  String SQL ) throws  Exception {
//			logger.info( "queryMapByBindCondition ......................." );
//			Map<?, ?>  result =null;
//			
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			
//			try{
//				PreparedStatement pstmt=connection.prepareStatement(SQL);
//				ResultSet rs=pstmt.executeQuery();
//				result =MappingTools.resultToMap(rs)  ;
//				}
//				catch (Exception e){
//					throw new ObjectSQLException(e);
//				}
//				
//				finally {
//					if (connection.getAutoCommit()==true){
//						logger.info("is closed !");
//						connection.close();
//					}
//					}
//					return result ;
//			}
//		
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param String  ִ�е�SQL���
//		 * <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 * <p>
//		 * @param param  ��ѯ����
//		 */
//		public Map<?, ?>  queryMapByCondition (   String SQL,  Object [] param ) throws  Exception {
//			logger.info( "queryMapByBindCondition ......................." );
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			
//			Map<?, ?>  result =null;
//			try{
//				PreparedStatement pstmt=connection.prepareStatement(SQL);
//				if (param!=null){
//					for (int i=0;i<param.length;i++){
//						pstmt.setObject(i+1,param[i]  );
//					}
//				}  // if 
//				
//				ResultSet rs=pstmt.executeQuery();
//				 result =MappingTools.resultToMap(rs)  ;
//			}
//			catch (Exception e){
//				throw new ObjectSQLException(e);
//			}
//			
//			finally {
//				if (connection.getAutoCommit()==true){
//					logger.info("is closed !");
//					connection.close();
//				}
//				}
//				return result ;
//		}
//		
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param String  ִ�е�SQL���
//		 * <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 * <p>
//		 * @param param  ��ѯ����
//		 */
//		public List<?> queryListByCondition (  String SQL, Class<?> objTable,Object [] param ) throws  Exception{
//			logger.info( "queryListBySQLCondition ......................." );
//			List<?> obj =null;
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			try{
//			PreparedStatement pstmt=connection.prepareStatement(SQL);
//			if (param!=null){
//				for (int i=0;i<param.length;i++){
//					pstmt.setObject(i+1,param[i]  );
//				}
//			}
//		
//			ResultSet rs=pstmt.executeQuery();
//				obj =MappingTools.toBeanList(rs, objTable );
//			}
//			catch (Exception e){
//				throw new ObjectSQLException(e);
//			}
//			
//			finally {
//				if (connection.getAutoCommit()==true){
//					logger.info("is closed !");
//					connection.close();
//				}
//				}
//				return obj ;
//		}
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param String  ִ�е�SQL���
//		 * <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 */
//		public List<?> queryList (  String SQL, Class<?>  objTable ) throws  Exception {
//			
//		
//			
//			logger.info( "queryList ......................." );
//			List<?> list =null;
//			try{
//				PreparedStatement pstmt=connection.prepareStatement(SQL);
//				ResultSet rs=pstmt.executeQuery();
//				list =MappingTools.toBeanList(rs, objTable );
//			}
//			catch (Exception e){
//				throw new ObjectSQLException(e);
//			}
//			finally {
//				if (connection.getAutoCommit()==true){
//					logger.info("is closed !");
//					connection.close();
//				}
//			}
//			return list ;
//		}
//				
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param String  ִ�е�SQL���
//		 * <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 */
//		public Object  queryOneObject (   String SQL, Class<?> objTable ) throws  Exception{
//			Object obj=null;
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			
//			try{
//			PreparedStatement pstmt=connection.prepareStatement(SQL);
//			ResultSet rs=pstmt.executeQuery();
//			obj =MappingTools.toBean (rs, objTable );
//			}
//			catch (Exception e){
//				throw new ObjectSQLException(e);
//			}
//			finally {
//				if (connection.getAutoCommit()==true){
//					logger.info("is closed !");
//					connection.close();
//				}
//			}
//			return obj ;
//		}
//		
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param String  ִ�е�SQL���
//		 * <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 * <p>
//		 * @param param  ��ѯ����
//		 */
//		public Object  queryOneObjectByCondition (   String SQL, Class<?> objTable, Object [] param )
//					throws  Exception{
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			Object obj=null;
//			try{
//			PreparedStatement pstmt=connection.prepareStatement(SQL);
//			if (param!=null){
//				for (int i=0;i<param.length;i++){
//					pstmt.setObject(i+1,param[i]  );
//				}
//			}
//			ResultSet rs=pstmt.executeQuery();
//			obj =MappingTools.toBean (rs, objTable );
//			}
//			catch (Exception e){
//				throw new ObjectSQLException(e);
//			}
//			finally {
//				if (connection.getAutoCommit()==true){
//					logger.info("is closed !");
//					connection.close();
//				}
//			}
//			return obj ;
//		}
//		
//		
//		/**<p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param String  ִ�е�SQL���
//		 */
//		public void updateObjectBySQL( String SQL  ) throws SQLException {
//			logger.info( "updateObjectByPrimaryKey ......................." );
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			try{
// 	 	  			PreparedStatement pstmt=connection.prepareStatement(SQL);
//  	 	  			pstmt.executeUpdate();
//				}
//				catch (Exception e){
//					throw new ObjectSQLException(e);
//				}
//				finally {
//					if (connection.getAutoCommit()==true){
//						logger.info("is closed !");
//						connection.close();
//					}
//				}
//			}
//		
//		
//		/**
//		 * <p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 * <p>
//		 * @param KeyColumn  ���������ֶ����
//		 * <p>
//		 * @param KeyValue	  ���������ֶ�ֵ
//		 */
//		public void updateObjectByPrimaryKey( Object  objTable,String KeyColumn,Object KeyValue  )  throws  Exception {
//			logger.info( "updateObjectByPrimaryKey ......................." );
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			try{
//					String table=MappingTools.getTableName(objTable);
//					
//					List<String> column=MappingTools.getObjectColumnName(objTable);
//				 
// 					Map<?, ?> map =  MappingTools.copyABeanToMap(objTable ) ;	
// 					map.remove("class");
//					
//					StringBuffer sBuffer = new StringBuffer();
//					sBuffer.append( "update ").append(table).append(" SET ");
//					for (int i=0;i<column.size();i++){
//						sBuffer.append(  column.get(i)   ).append("=?,");
//					}
//					String SQL1= sBuffer.substring(0,  sBuffer.lastIndexOf(",")    ) ;
//					
//					StringBuffer sBuffer1 = new StringBuffer();
//					sBuffer1.append( SQL1 ).append(" where  ").append(KeyColumn).append("=?");
//					logger.info( "SQL  ["+sBuffer1+"]" );
//					
// 	 	  			PreparedStatement pstmt=connection.prepareStatement(sBuffer1.toString());
// 	 	  			for (int i=0;i<column.size();i++){
// 	 	  				pstmt.setObject(i+1, map.get( column.get(i)  ) );
// 	 	  			}
// 	 	  			pstmt.setObject(column.size()+1, KeyValue );
// 	 	  			
//  	 	  			pstmt.executeUpdate();
//				}
//				catch (Exception e){
//					throw new ObjectSQLException(e);
//				}
//				finally {
//					if (connection.getAutoCommit()==true){
//						logger.info("is closed !");
//						connection.close();
//					}
//				}
//			}
//		
//		/**
//		 *     �����¼����
//		 * <p>
//		 * @param conn  ��ݿ���������  
//		 * <p>
//		 * @param objTable  ʵ�� (new)  pojo ����
//		 */
//		public void addObject( Object objTable  ) throws  Exception {
//			logger.info( "addObject ......................." );
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			try{
//					String table=MappingTools.getTableName(objTable);
//					
//					List<String> column=MappingTools.getObjectColumnName(objTable);
//				 
//					Map<?, ?> map =  MappingTools.copyABeanToMap(objTable ) ;	 
//					
//					StringBuffer sBuffer = new StringBuffer();
//					sBuffer.append( "insert into ").append(table).append(" (");
//					for (int i=0;i<column.size();i++){
//						sBuffer.append(  column.get(i)   ).append(",");
//					}
//					sBuffer.append(") values ("  );
//					
//					for (int i=0;i<column.size();i++){
//						sBuffer.append("?,");
//					}
//					sBuffer.append(")");
//					
//	 				String SQL= sBuffer.toString().replaceAll("\\,\\)", " )")  ;
//					logger.info( "SQL  ["+SQL+"]" );
//					
//	 	  			PreparedStatement pstmt=connection.prepareStatement(SQL);
//	 	  			for (int i=0;i<column.size();i++){
//	 	  				pstmt.setObject(i+1, map.get( column.get(i)   ));
//	 	  			}
//	 	  			pstmt.executeUpdate();
//				}
//				catch (Exception e){
//					throw new ObjectSQLException(e);
//				}
//				finally {
//					if (connection.getAutoCommit()==true){
//						logger.info("is closed !");
//						connection.close();
//					}
//				}
//			}
//		
//		/**
//		 * ��������
//		 * @param conn ��ݿ���������  
//		 * @throws SQLException 
//		 */
//		public void endTransaction(  ) throws Exception {
//			logger.info( "endTransaction ........." );
//			
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			
//			try {
//				connection.commit();
//				connection.close() ;
//				}
//			catch ( Exception e) {
//				connection.rollback();
//				throw new ObjectSQLException(e);
//			}
//		}
//		
//		/**
//		 * ��������
//		 * @param conn ��ݿ���������  
//		 * @throws SQLException 
//		 */
//		public void startTransaction( ) throws SQLException {
//				logger.info( "startTransaction ........." );
//				if (connection==null) {
//					connection=dataSource.getConnection();
//				}
//				try {
//					connection.setAutoCommit(false);
//					}
//				catch (SQLException e) {
//					throw new ObjectSQLException(e);
//				}
//			}
//
//
//		 /**
//		  * @param conn ��ݿ���������  
//		  * <p>
//		  * @param objTable ��������
//		  * <p>
//		  * @param PrimaryKey �ֶ����(����)
//		  * <p>
//		  *  @param PrimaryKey �ֶ�ֵ(����)
//		  * <p>
//		  */
//		public void deleteByPrimaryKey( Class<?> objTable, Object PrimaryKey ,Object PrimaryValue) throws Exception {
//			logger.info( "deleteByPrimaryKey ......................." );
//			if (connection==null) {
//				connection=dataSource.getConnection();
//			}
//			try{
//					String table=MappingTools.getTableName(objTable);
//					StringBuffer sBuffer=new StringBuffer();
//					sBuffer.append(" delete from ").append(table).append(" where ").append(PrimaryKey).append("=?");
//					
//					PreparedStatement pstmt=connection.prepareStatement(sBuffer.toString() );
// 							pstmt.setObject( 1, PrimaryValue);
// 							pstmt.executeUpdate();
//			}
//				catch (Exception e){
//					throw new ObjectSQLException(e);
//				}
//				finally {
//					if (connection.getAutoCommit()==true){
//						logger.info("is closed !");
//						connection.close();
//					}
//				}
//			}
//
//
//		 /**
//		  * @param conn ��ݿ���������  
//		  * <p>
//		  * @param objTable ��������
//		  * <p>
//		  * @param PrimaryKey �ֶ����(����)
//		  * <p>
//		  *  @param PrimaryKey ����ֶ�ֵ(����)
//		  * <p>
//		  */
////		public void deleteObjectsByPrimaryKeys(Connection conn, Class<?>  objTable,Object PrimaryKey, Object [] PrimaryValue ) throws Exception {
//		public void deleteObjectsByPrimaryKeys( Class<?>  objTable,Object PrimaryKey, Object [] PrimaryValue ) throws Exception {
//			logger.info( "deleteObjectsByPrimaryKeys ......................." );
//			try{
//				if (connection==null) {
//					connection=dataSource.getConnection();
//				}
//			String table=MappingTools.getTableName(objTable);
//			
//			StringBuffer sBuffer=new StringBuffer();
//			sBuffer.append(" delete from ").append(table).append(" where ");
//			PreparedStatement pstmt=null;
//			 
//			Object[] obj1=(Object[]) PrimaryValue;
//			for ( int i=0;i<obj1.length;i++){
//				if (i==0){
//					sBuffer.append(PrimaryKey ).append("=? ");
//				}
//				else{
//					sBuffer.append("or ").append(PrimaryKey).append("=? ");
//				}
//			}
//				pstmt=connection.prepareStatement(sBuffer.toString());
//				for ( int i=0;i< obj1.length;i++){
//					pstmt.setObject(i+1, obj1[i]);
//				}
//				
//				pstmt.executeUpdate();
//				}
//				catch (Exception e){
//					throw new ObjectSQLException(e);
//				}
//				finally {
//					if (connection.getAutoCommit()==true){
//						logger.info("is closed !");
//						connection.close();
//					}
//				}
//			}
//		
//		
//}
